home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Info-Mac 4
/
Info_Mac IV CD-ROM (Pacific HiTech Inc.)(August 1994).iso
/
Development
/
General
/
DR1.#1 PowerPlant ƒ
/
LPane.h
< prev
next >
Wrap
Text File
|
1994-02-10
|
6KB
|
259 lines
// ===========================================================================
// LPane.h ©1993 Metrowerks Inc. All rights reserved.
// ===========================================================================
#pragma once
class LView;
class LStream;
typedef Int16 PaneIDT;
struct SDimension16 {
Int16 width;
Int16 height;
};
struct SDimension32 {
Int32 width;
Int32 height;
};
typedef Point SPoint16;
struct SPoint32 {
Int32 h;
Int32 v;
};
struct SBooleanRect {
Boolean left;
Boolean top;
Boolean right;
Boolean bottom;
};
struct SMouseDownEvent {
Point wherePort;
Point whereLocal;
EventRecord macEvent;
Boolean delaySelect;
};
struct PanelSpec {
Uint32 horizIndex;
Uint32 vertIndex;
Uint32 pageNumber;
};
struct PanePlace {
SDimension16 frameSize;
SPoint32 frameLocation;
};
enum {
paneAttr_EraseFirst = 0x80000000,
paneAttr_FrameInside = 0x40000000,
paneAttr_FrameOutside = 0x20000000,
paneAttr_DrawFocusBox = 0x10000000
};
struct SPaneInfo {
Int16 paneID;
Int16 width;
Int16 height;
Boolean visible;
Boolean enabled;
SBooleanRect bindings;
Int32 leftInSuperImage;
Int32 topInSuperImage;
Int32 refCon;
};
const Int16 min_QDCoord = -32768;
const Int16 max_QDCoord = 32767;
class LPane {
friend class LView;
public:
LPane();
LPane(const LPane &inOriginal);
LPane(LStream *inStream);
virtual ~LPane();
virtual void FinishCreate();
PaneIDT GetPaneID() const;
void SetPaneID(PaneIDT inPaneID);
virtual LPane* FindPaneByID(PaneIDT inPaneID);
static LView* GetDefaultView();
static void SetDefaultView(LView *inView);
virtual GrafPtr GetMacPort() const;
virtual Int32 GetValue() const;
virtual void SetValue(Int32 inValue);
virtual StringPtr GetDescriptor(Str255 outDescriptor) const;
virtual void SetDescriptor(ConstStr255Param inDescriptor);
virtual Int32 GetRefCon() const;
virtual void SetRefCon(Int32 inRefCon);
// • Frame Management
void GetFrameSize(SDimension16 &outSize) const;
void GetFrameLocation(SPoint32 &outLocation) const;
void SetFrameBinding(const SBooleanRect &inFrameBinding);
virtual Boolean CalcPortFrameRect(Rect& outRect) const;
virtual Boolean CalcLocalFrameRect(Rect& outRect) const;
void ResizeFrameTo(Int16 inWidth, Int16 inHeight,
Boolean inRefresh);
virtual void ResizeFrameBy(Int16 inWidthDelta, Int16 inHeightDelta,
Boolean inRefresh);
virtual void MoveBy(Int32 inHorizDelta, Int32 inVertDelta,
Boolean inRefresh);
void PlaceInSuperFrameAt(Int32 inHorizOffset,
Int32 inVertOffset, Boolean inRefresh);
virtual void PlaceInSuperImageAt(Int32 inHorizOffset,
Int32 inVertOffset, Boolean inRefresh);
virtual void SavePlace(LStream *outPlace);
virtual void RestorePlace(LStream *inPlace);
void PutInside(LView *inView);
LView* GetSuperView();
// • Adapting to changes in SuperView
virtual void AdaptToNewSurroundings();
virtual void AdaptToSuperFrameSize(Int32 inSurrWidthDelta,
Int32 inSurrHeightDelta,
Boolean inRefresh);
virtual void AdaptToSuperScroll(Int32 inHorizScroll,
Int32 inVertScroll);
// • Mousing
virtual Boolean PointIsInFrame(Int32 inHorizPort, Int32 inVertPort) const;
virtual Boolean IsHitBy(Int32 inHorizPort, Int32 inVertPort);
virtual LPane* FindSubPaneHitBy(Int32 inHorizPort, Int32 inVertPort);
virtual void Click(SMouseDownEvent &inMouseDown);
virtual void EventMouseUp(const EventRecord &inMacEvent);
virtual void UpdateClickCount(const SMouseDownEvent &inMouseDown);
virtual void AdjustCursor(Point inPortPt,
const EventRecord &inMacEvent);
virtual Boolean PointsAreClose(Point inFirstPt, Point inSecondPt);
virtual Boolean ClickTimesAreClose(Uint32 inLastClickTime);
static LPane* GetLastPaneClicked();
// • Showing
Boolean IsVisible() const;
virtual void Show();
virtual void Hide();
// • Activating
Boolean IsActive() const;
virtual void Activate();
virtual void Deactivate();
// • Enabling
Boolean IsEnabled() const;
virtual void Enable();
virtual void Disable();
// • Drawing
virtual void LockDrawing();
virtual void UnlockDrawing();
virtual void Refresh();
virtual void InvalPortRect(const Rect *inRect);
virtual void InvalPortRgn(RgnHandle inRgnH);
virtual void ValidPortRect(const Rect *inRect);
virtual void ValidPortRgn(RgnHandle inRgnH);
virtual RgnHandle GetLocalUpdateRgn();
virtual void UpdatePort();
virtual Boolean FocusDraw();
virtual void Draw(RgnHandle inSuperDrawRgnH);
// • Printing
virtual void CountPanels(Uint32 &outHorizPanels,
Uint32 &outVertPanels);
virtual void PrintPanel(const PanelSpec &inPanel,
RgnHandle inSuperPrintRgnH);
virtual void SuperPrintPanel(const PanelSpec &inSuperPanel,
RgnHandle inSuperPrintRgnH);
virtual void PrintPanelSelf(const PanelSpec &inPanel);
// • Coordinate Transformations
virtual void PortToLocalPoint(Point &ioPoint) const;
virtual void LocalToPortPoint(Point &ioPoint) const;
virtual void GlobalToPortPoint(Point &ioPoint) const;
virtual void PortToGlobalPoint(Point &ioPoint) const;
static Boolean IsAreaInQDSpace(Int32 inLeft, Int32 inTop,
Int16 inWidth, Int16 inHeight);
static Int16 GetClickCount();
protected:
static LView *sDefaultView;
static LPane *sLastPaneClicked;
static Uint32 sWhenLastMouseUp;
static Uint32 sWhenLastMouseDown;
static Point sWhereLastMouseDown;
static Int16 sClickCount;
virtual void FinishCreateSelf();
virtual void ClickSelf(const SMouseDownEvent &inMouseDown);
virtual void AdjustCursorSelf(Point inPortPt,
const EventRecord &inMacEvent);
virtual void DrawSelf();
virtual void ShowSelf();
virtual void SuperShow();
virtual void HideSelf();
virtual void SuperHide();
virtual void ActivateSelf();
virtual void SuperActivate();
virtual void DeactivateSelf();
virtual void SuperDeactivate();
virtual void EnableSelf();
virtual void SuperEnable();
virtual void DisableSelf();
virtual void SuperDisable();
private:
PaneIDT mPaneID;
Int16 mLockLevel;
SDimension16 mFrameSize;
SPoint32 mFrameLocation;
SBooleanRect mFrameBinding;
Int32 mRefCon;
LView *mSuperView;
protected: // +++ These will become private, so don't access
// them from subclasses
ETriState mVisible;
ETriState mActive;
ETriState mEnabled;
};